package loja.model.handler.impl;

import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;

import loja.model.entity.produto.ItemEstoque;
import loja.model.entity.produto.Produto;

public class ItemEstoqueHandlerView extends
		AbstractHandlerViewEntity<ItemEstoque, Long> {

	private final String ID = "idEstoque";
	private final String PRODUTO = "produto";
	private final String VALIDADE = "validade";
	private final String PRECO_VENDA = "precoVenda";
	private final String PRECO_COMPRA = "precoCompra";
	private final String QUANTIDADE = "quantidade";
	private final String LOCAL = "local";

	public ItemEstoqueHandlerView() {
		super(new ItemEstoque());
	}

	@Override
	public Long getPrimaryKeyOfViewEntity() {
		return getEntity().getIdEstoque();
	}

	@Override
	public void updateEntity() throws ParseException {

		DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM);

		long idEstoque;
		Produto produto;
		Date validade;
		double precoVenda;
		double precoCompra;
		double quantidade;
		String local;

		if (propertyViews.containsKey(ID)) {
			idEstoque = Long.parseLong(propertyViews.get(ID).getPropertyValue()
					.toString());
			getEntity().setIdEstoque(idEstoque);
		}

		if (propertyViews.containsKey(PRODUTO)) {
			produto = (Produto) propertyViews.get(PRODUTO).getPropertyValue();
			getEntity().setProduto(produto);
		}

		if (propertyViews.containsKey(VALIDADE)) {
			validade = dateFormat.parse(propertyViews.get(VALIDADE)
					.getPropertyValue().toString());
			getEntity().setValidade(validade);
		}

		if (propertyViews.containsKey(PRECO_COMPRA)) {
			precoCompra = Double.parseDouble(propertyViews.get(PRECO_COMPRA)
					.getPropertyValue().toString());
			getEntity().setPrecoCompra(precoCompra);
		}

		if (propertyViews.containsKey(PRECO_VENDA)) {
			precoVenda = Double.parseDouble(propertyViews.get(PRECO_VENDA)
					.getPropertyValue().toString());
			getEntity().setPrecoVenda(precoVenda);
		}

		if (propertyViews.containsKey(QUANTIDADE)) {
			quantidade = Double.parseDouble(propertyViews.get(QUANTIDADE)
					.getPropertyValue().toString());
			getEntity().setQuantidade(quantidade);
		}

		if (propertyViews.containsKey(LOCAL)) {
			local = String.valueOf(propertyViews.get(LOCAL).getPropertyValue());
			getEntity().setLocal(local);
		}

	}

	@Override
	public void updateView() {

		long idEstoque = getEntity().getIdEstoque();
		Produto produto = getEntity().getProduto();
		Date validade = getEntity().getValidade();
		double precoVenda = getEntity().getPrecoVenda();
		double precoCompra = getEntity().getPrecoCompra();
		double quantidade = getEntity().getQuantidade();
		String local = getEntity().getLocal();

		if (propertyViews.containsKey(ID))
			propertyViews.get(ID).setPropertyValue(idEstoque);

		if (propertyViews.containsKey(PRODUTO))
			propertyViews.get(PRODUTO).setPropertyValue(produto);

		if (propertyViews.containsKey(VALIDADE))
			propertyViews.get(VALIDADE).setPropertyValue(validade);

		if (propertyViews.containsKey(PRECO_VENDA))
			propertyViews.get(PRECO_VENDA).setPropertyValue(precoVenda);

		if (propertyViews.containsKey(PRECO_COMPRA))
			propertyViews.get(PRECO_COMPRA).setPropertyValue(precoCompra);

		if (propertyViews.containsKey(QUANTIDADE))
			propertyViews.get(QUANTIDADE).setPropertyValue(quantidade);

		if (propertyViews.containsKey(LOCAL))
			propertyViews.get(LOCAL).setPropertyValue(local);

	}

}
